contents
1. REST API란?
- REST API(Representational State Transfer, RESTful API)는 네트워크 기반 애플리케이션을 설계하기 위한 아키텍처 스타일이자, 클라이언트와 서버가 HTTP를 통해 쉽게 데이터를 주고받을 수 있게 해주는 웹 서비스 구축 방식입니다.
- 시스템 간에 데이터를 유연하게 교환할 수 있으며, 현대 웹/모바일 백엔드, 마이크로서비스 아키텍처에서 표준적으로 사용됩니다.
- REST API는 HTTP 메서드(GET, POST, PUT, DELETE 등)와 자원(Resource)의 고유 식별자인 URL(URI)을 사용합니다.
2. REST의 탄생 배경
- REST는 2000년 로이 필딩 박사의 논문을 통해 정의된 확장성·유지보수성·유연성을 고려한 아키텍처 설계 원칙입니다.
3. REST의 6대 주요 원칙(아키텍처 제약조건)
1. Uniform Interface(일관된 인터페이스)
- API의 모든 상호작용은 일관적이고 동일한 방식(주로 HTTP 기반)으로 이루어집니다.
- 각 자원은 URI로 고유하게 식별됩니다(예:
/users/123). - 데이터는 JSON, XML 등으로 표준화되어 교환됩니다.
- 메시지 자체에 필요한 정보를 포함(셀프-디스크립티브).
- 하이퍼미디어(HATEOAS): 응답에 가능한 동작이나 관련 자원의 링크를 포함할 수 있습니다.
2. Statelessness(무상태성)
- 모든 API 요청은 독립적이며, 필요한 모든 정보를 매 요청마다 포함해야 합니다(서버는 세션이나 상태를 저장하지 않음).
- 대규모 확장성 및 신뢰성 향상. 필요한 경우 클라이언트가 상태를 관리.
3. Client-Server(클라이언트-서버 분리)
- 클라이언트(프론트)와 서버(백엔드)가 독립적으로 개발/업데이트될 수 있음.
- 클라이언트는 UI 및 상태를, 서버는 데이터 및 비즈니스 로직을 담당.
4. Cacheability(캐시 처리)
- 서버 응답에 캐시 가능여부를 명시(HTTP 헤더).
- 사용자는 중간 서버·클라이언트에 결과를 캐싱, 성능 향상과 부하 감소 효과.
5. Layered System(계층 시스템)
- 인증, 로드 밸런서, 프록시 등 여러 계층이 API 시스템에 삽입될 수 있음.
- 클라이언트는 실제 서버와 직접 통신하는지 중간 레이어를 거치는지 알 필요가 없음.
6. Code on Demand(코드 온 디맨드, 선택적)
- 서버가 실행 가능한 코드(예: JS)를 클라이언트로 전송해 기능을 확장할 수 있으나, 일반적이지는 않음.
4. 리소스 기반 설계
- REST에서는 모든 것이 리소스입니다(예: 사용자, 상품, 주문 등). 각 리소스는 URI로 접근합니다(예:
/products/1). - 자원 조작에 표준 HTTP 메서드 사용:
- GET: 데이터 조회(읽기)
- POST: 새로운 리소스 생성
- PUT: 전체 업데이트/교체
- PATCH: 일부 수정
- DELETE: 삭제
5. RESTful 요청과 응답
- 표준 HTTP 메서드, URI, 쿼리 파라미터, 헤더를 사용합니다.
- 응답은 보통 JSON(선호), XML 등,
Content-Type,Accept헤더로 포맷 명시. - 모든 정보가 요청/응답 메시지에 자가 설명적으로 포함(상태 코드, 링크 등 포함).
6. 표준 HTTP 상태 코드
REST API에서는 표준 HTTP 상태 코드로 요청 결과를 전달:
| 코드 | 의미 |
|---|---|
| 200 | 성공 |
| 201 | 리소스 생성됨 |
| 204 | 정상 처리, 응답 본문 없음 |
| 400 | 잘못된 요청(입력 오류 등) |
| 401 | 인증 필요(로그인 필요) |
| 404 | 리소스 없음 |
| 500 | 서버 내부 오류 |
7. 인증 및 보안
- 사용자 인증(OAuth2, JWT, API Key 등) 및 리소스 접근 권한 체크.
- HTTPS로 통신 암호화.
8. 베스트 프랙티스
- URI는 자원을 명확히 나타내는 명사형으로 사용(
/users,/products/1등). - URI에 동사 사용을 피할 것.
- API 버전 명시(
/v1/products). - 상세한 에러 메시지 포함.
- 컬렉션 형태 데이터는 페이징, 필터, 속도 제한 등 적용.
- Swagger(오픈API) 등으로 문서화.
9. REST와 다른 API 스타일 비교
- REST 외에 SOAP(XML 기반), GraphQL(유연한 쿼리), gRPC(바이너리, 인터페이스 명세 기반) 등이 있음.
- REST의 강점은 단순함, 무상태성, 확장성, 표준화, 범용성에 있습니다.
REST API는 HTTP와 자원 지향 설계, 무상태성, 명확한 URI·상태 코드 등을 기반으로 시스템 간 상호운용성과 신뢰성, 확장성이 뛰어난 현대 웹·모바일 서비스의 근간입니다.
references